Operation has No Effect (ONE)

Description:

ONE detects arithmetic expressions that always return one of their operands' value. This message is produced only for expressions that have at least one operand which is not a compile-time constant. The examined operations are described below.

Incorrect:

MenuItem = class
    private
      name:String;
      index:integer;
	public
      procedure Item(n:String; index:integer);
      function getPosition():integer;
end;
...
procedure MenuItem.Item(n:String; index:integer);
begin
  self.name := name;
  self.index := index;
end;

function MenuItem.getPosition():integer;
var base:integer;
begin
  base := 0;
  result := index + base;
end;

Correct:

MenuItem = class
    private
      name:String;
      index:integer;
	public
      procedure Item(name:String; index:integer);
      function getPosition():integer;
end;
...
procedure MenuItem.Item(name:String; index:integer);
begin
  self.name := name;
  self.index := index;
end;

function MenuItem.getPosition():integer;
begin
  result := index;
end;